#include <string.h>
#include <stdlib.h>
#include "JctoRandArray.h"
#include "JctoYing.h"

static void swap(int i,int j,void*a,int aSize,void*b,int bSize)
{
    void*p=malloc(aSize>bSize?aSize:bSize);
    memcpy(p,a+aSize*j,aSize);
    memcpy(a+aSize*j,a+aSize*i,aSize);
    memcpy(a+aSize*i,p,aSize);
    
    memcpy(p,b+bSize*j,bSize);
    memcpy(b+bSize*j,b+bSize*i,bSize);
    memcpy(b+bSize*i,p,bSize);
    free(p);
}

void jctoRandArray(int dataLen,int swapTimes,void*a,int aSize,void*b,int bSize)
{
    int z=0;
    for(;z<swapTimes/2;++z)
    {
        hxPrintfFL("jctoRandArray %d/%d\n",z,swapTimes);
        for(int i=dataLen-1;i>0;--i)
        {
            swap(i,rand()%i,a,aSize,b,bSize);
        }
    }
    for(;z<swapTimes;++z)
    {
        hxPrintfFL("jctoRandArray %d/%d\n",z,swapTimes);
        for(int i=1;i<dataLen;++i)
        {
            swap(i,rand()%i,a,aSize,b,bSize);
        }
    }
}
